Deskripsi

Analisis ini bertujuan untuk membuat visualisasi data berdasarkan dataset UAS yang diberikan, termasuk grafik univariat, bivariat, multivariat, dan interaktif. Dataset ini mencakup informasi tentang harapan hidup, pendapatan per kapita, populasi, dan rata-rata jumlah anak dari berbagai negara dan benua selama beberapa tahun.

Data Preparation

1. Mengimpor Dataset

# Memuat dataset
library(readxl)
file_path <- "Data UAS.xlsx"
df <- read_excel(file_path, sheet = "Data") %>%
  mutate(
    Benua = factor(Benua),
    Tahun = as.integer(Tahun)
  )

# Menampilkan beberapa baris pertama
head(df)
## # A tibble: 6 × 8
##   geo   Negara    Benua Tahun Angka_Harapan_Hidup Pendapatan_per_kapita Populasi
##   <chr> <chr>     <fct> <int>               <dbl>                 <dbl>    <dbl>
## 1 afg   Afghanis… asia   1800                28.2                  481.  3280000
## 2 afg   Afghanis… asia   1801                28.2                  481.  3280000
## 3 afg   Afghanis… asia   1802                28.2                  481.  3280000
## 4 afg   Afghanis… asia   1803                28.2                  481.  3280000
## 5 afg   Afghanis… asia   1804                28.2                  481.  3280000
## 6 afg   Afghanis… asia   1805                28.2                  481.  3280000
## # ℹ 1 more variable: Jumlah_anak <dbl>

2. Statistik Deskriptif

summary(df)
##      geo               Negara               Benua           Tahun     
##  Length:44325       Length:44325       africa  :12150   Min.   :1800  
##  Class :character   Class :character   americas: 7875   1st Qu.:1856  
##  Mode  :character   Mode  :character   asia    :13275   Median :1912  
##                                        europe  :11025   Mean   :1912  
##                                                         3rd Qu.:1968  
##                                                         Max.   :2024  
##  Angka_Harapan_Hidup Pendapatan_per_kapita    Populasi          Jumlah_anak   
##  Min.   : 0.00       Min.   :   163.0      Min.   :6.510e+02   Min.   :0.710  
##  1st Qu.:31.16       1st Qu.:   974.1      1st Qu.:2.972e+05   1st Qu.:4.210  
##  Median :36.13       Median :  1714.7      Median :1.811e+06   Median :5.830  
##  Mean   :42.99       Mean   :  5932.4      Mean   :1.380e+07   Mean   :5.235  
##  3rd Qu.:58.43       3rd Qu.:  4512.2      3rd Qu.:6.370e+06   3rd Qu.:6.570  
##  Max.   :85.50       Max.   :221544.1      Max.   :1.451e+09   Max.   :8.860

1. Grafik Univariat

Histogram: Distribusi Angka Harapan Hidup

ggplot(df, aes(x = Angka_Harapan_Hidup)) +
  geom_histogram(
    bins = 30, 
    fill = "#69b3a2", 
    color = "white", 
    alpha = 0.9
  ) +
  theme_minimal() +
  labs(
    title = "Distribusi Angka Harapan Hidup",
    x = "Angka Harapan Hidup",
    y = "Frekuensi"
  ) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
    axis.text = element_text(size = 10)
  )

2. Grafik Bivariat

Scatter Plot: Pendapatan per Kapita vs Angka Harapan Hidup

p_scatter <- ggplot(df, aes(
  x = Pendapatan_per_kapita,
  y = Angka_Harapan_Hidup,
  size = Populasi,
  color = Benua,
  text = paste(
    "Negara:", Negara, 
    "<br>Populasi:", scales::comma(Populasi),
    "<br>Pendapatan:", scales::comma(Pendapatan_per_kapita),
    "<br>Harapan Hidup:", round(Angka_Harapan_Hidup, 2)
  )
)) +
  geom_point(alpha = 0.8) +
  scale_x_log10(labels = scales::comma) +
  theme_minimal() +
  labs(
    title = "Pendapatan per Kapita vs Angka Harapan Hidup",
    x = "Pendapatan per Kapita (Log Skala)",
    y = "Angka Harapan Hidup",
    color = "Benua",
    size = "Populasi"
  ) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
    legend.position = "bottom"
  )

# Menggunakan plotly untuk interaktivitas
plotly::ggplotly(p_scatter, tooltip = "text")

3. Grafik Multivariat

Heatmap: Rata-rata Jumlah Anak Berdasarkan Benua dan Tahun

library(reshape2)
## 
## Attaching package: 'reshape2'
## The following object is masked from 'package:tidyr':
## 
##     smiths
heatmap_data <- df %>%
  group_by(Benua, Tahun) %>%
  summarize(Rata_Jumlah_Anak = mean(Jumlah_anak, na.rm = TRUE))
## `summarise()` has grouped output by 'Benua'. You can override using the
## `.groups` argument.
p_heatmap <- ggplot(heatmap_data, aes(x = Tahun, y = Benua, fill = Rata_Jumlah_Anak)) +
  geom_tile(color = "white") +
  scale_fill_gradientn(colors = brewer.pal(9, "YlOrRd"), na.value = "grey") +
  theme_minimal() +
  labs(
    title = "Rata-rata Jumlah Anak Berdasarkan Benua dan Tahun",
    x = "Tahun",
    y = "Benua",
    fill = "Rata-rata\nJumlah Anak"
  ) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
    axis.text.x = element_text(angle = 45, hjust = 1)
  )

# Interaktif
plotly::ggplotly(p_heatmap)

4. Grafik Interaktif

Bubble Plot Interaktif: Pendapatan vs Harapan Hidup

p_bubble <- plot_ly(
  data = df,
  x = ~Pendapatan_per_kapita,
  y = ~Angka_Harapan_Hidup,
  size = ~Populasi,
  color = ~Benua,
  text = ~paste(
    "Negara:", Negara, 
    "<br>Populasi:", scales::comma(Populasi),
    "<br>Pendapatan:", scales::comma(Pendapatan_per_kapita),
    "<br>Harapan Hidup:", round(Angka_Harapan_Hidup, 2)
  ),
  type = "scatter",
  mode = "markers",
  marker = list(sizemode = "diameter", opacity = 0.7)
) %>%
  layout(
    title = "Bubble Plot: Pendapatan vs Harapan Hidup",
    xaxis = list(title = "Pendapatan per Kapita (Log Skala)", type = "log"),
    yaxis = list(title = "Angka Harapan Hidup"),
    legend = list(title = list(text = "Benua"))
  )

p_bubble

Kesimpulan

  1. Histogram menunjukkan distribusi angka harapan hidup yang beragam, dengan puncak di kisaran tertentu.
  2. Scatter plot mengindikasikan hubungan positif antara pendapatan per kapita dan angka harapan hidup, terutama di negara-negara maju.
  3. Heatmap mengungkapkan pola rata-rata jumlah anak per benua dari tahun ke tahun.
  4. Bubble plot interaktif memberikan fleksibilitas eksplorasi data dengan menampilkan informasi tambahan saat kursor diarahkan ke titik tertentu.